﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Planisoft.Entities;
using System.Runtime.Remoting.Contexts;

namespace Planisoft.DAO
{
    public class ConfiguraTrabajadorDAO: MasterDataAcces ,IconfiguraTrabajadorDAO
    {

        public List<ConfiguraTrabajador> GeetAllFromConfigTrabajador()
        {
            var query = from ct in Context.ConfiguraTrabajadors
                            orderby ct.Trabajador.ApPaterno
                            select ct;
            return query.ToList();

            /*var query = (from person in context.People
                         join pet in context.Pets on person equals pet.Owner
                         into tempPets
                         from pets in tempPets.DefaultIfEmpty()
                         select new { OwnerName = person.Name, Pet = pets.Name })
            .ToList();

            var query = from ct in Context.ConfiguraTrabajadors
                        join tr in Context.Trabajadors on ct.IdTrabajador != tr.IdTrabajador
                            select ct;
            return query.ToList();  */           

        }

        public List<ConfiguraTrabajador> GetAllFromConfigTrabajadorBycriterio(string criterio)
        {
            throw new NotImplementedException();
        }

        public ConfiguraTrabajador GetFromConfigTrabajadorById(int id)
        {
            return Context.ConfiguraTrabajadors.Find(id);
        }

        public void AddConfigTrabajador(ConfiguraTrabajador configTrabajador)
        {
            Context.ConfiguraTrabajadors.Add(configTrabajador);
            Context.SaveChanges();
        }

        public void UpdateConfigTrabajador(ConfiguraTrabajador configTrabajador)
        {
            Context.Entry(configTrabajador).State = System.Data.EntityState.Modified;
            Context.SaveChanges();
        }

        public void RemoveConfigTrabajador(int id)
        {
            throw new NotImplementedException();
        }


        public List<Trabajador> GetAllFromTrabajadorNotConfigiration()
        {
            var query = from tnc in Context.Trabajadors
                        join cto in Context.Contratoes on tnc.IdTrabajador equals cto.IdTrabajador
                        where !(from ct in Context.ConfiguraTrabajadors select ct.IdTrabajador).Contains(tnc.IdTrabajador)
                            select tnc;

            return query.ToList();
            
        }
    }
}
